In a system where a set of actions needs to be enacted based on a vector of a plurality of bits and only one of the actions can be performed at a time, the problem exists of walking the vector to determine which actions should be taken while maintaining fairness. One solution is to increment through the bits of the vector and check if each bit is on or off. This is a simple solution, but has a worst-case time to find an active bit in the list of 2n where 2n is the length of the list. Another solution is to use a priority decoder to find active bits in the vector. This solution identifies an active bit every cycle if one exists, but requires many resources and is unfair. Also, bits that are low in the priority tree can be blocked. Yet another solution is to implement a round-robin arbiter, but this solution becomes too large to implement as the vector grows.
Therefore a need exists to overcome the problems with the prior art as discussed above.